# 使用官方 Go 镜像作为构建阶段
FROM golang:1.24-alpine AS builder

# 设置工作目录
WORKDIR /app

# 配置国内镜像源和私有库设置
ENV GOPROXY=https://goproxy.cn,direct \
    GO111MODULE=on \
    GOPRIVATE=git.mycompany.com  
# 如果有私有库请替换为你的域名

# 复制依赖文件（利用Docker缓存层）
COPY go.mod go.sum ./

# 使用国内源下载依赖（阿里云镜像）
RUN go mod download -x  
# -x 参数显示详细下载过程

# 复制全部源代码
COPY . .

# 静态编译设置（适合Alpine环境）
ENV CGO_ENABLED=0 \
    GOOS=linux \
    GOARCH=amd64

# 构建应用（可添加-ldflags减少二进制大小）
RUN go build -v -o /app/searchcenter .

# 使用轻量级运行环境
FROM alpine:3.18

# 设置国内Alpine镜像源（中科大源）
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories && \
    apk add --no-cache \
    tzdata \
    ca-certificates && \
    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    echo "Asia/Shanghai" > /etc/timezone

# 设置工作目录
WORKDIR /app

# 从构建阶段复制可执行文件
COPY --from=builder /app/searchcenter .
# 复制配置文件目录
COPY ./etc /app/etc

# 暴露端口（根据实际配置调整）
EXPOSE 8888

# 启动命令（支持环境变量注入）
CMD ["./searchcenter", "-f", "etc/searchcenter-api.yaml"]